package pers.hl.lib_global.common

import android.content.Context
import android.graphics.BitmapFactory
import com.amap.api.maps2d.AMapUtils
import com.amap.api.maps2d.model.BitmapDescriptorFactory
import com.amap.api.maps2d.model.LatLng
import com.amap.api.maps2d.model.Marker
import com.amap.api.maps2d.model.MarkerOptions
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeSearch
import com.amap.api.services.geocoder.RegeocodeQuery
import pers.hl.lib_global.KTApplication


object AMapUtils {

    /**
     * 绘制标记点
     * @param position 位置，经纬度
     * @param snippet 说明
     */
    fun getMarkerOption(
        position: LatLng,
        city: String,
        snippet: String,
        resId: Int
    ): MarkerOptions {
        val markerOption = MarkerOptions()
        markerOption.position(position)
        markerOption.title(city).snippet(snippet)
        markerOption.draggable(true) //设置Marker可拖动
        markerOption.icon(
            BitmapDescriptorFactory.fromBitmap(
                BitmapFactory
                    .decodeResource(KTApplication.getInstance().resources, resId)
            )
        )
        // 将Marker设置为贴地显示，可以双指下拉地图查看效果 3d才支持
//        markerOption.setFlat(true) //设置marker平贴地图效果
        return markerOption
    }

    /**
     * 逆地理编码（坐标转地址）:{link https://developer.amap.com/api/android-sdk/guide/map-data/geo}
     *
     * 通过回调接口 onRegeocodeSearched 解析返回的结果 1000为成功
     */
    fun transPositionToAddress(
        context: Context,
        latLonPoint: LatLonPoint,
        listener: GeocodeSearch.OnGeocodeSearchListener
    ) {
        val geocoderSearch = GeocodeSearch(context);
        geocoderSearch.setOnGeocodeSearchListener(listener);
        // 第一个参数表示一个Latlng，第二参数表示范围多少米，第三个参数表示是火系坐标系还是GPS原生坐标系
        val query = RegeocodeQuery(latLonPoint, 200f, GeocodeSearch.AMAP)
        geocoderSearch.getFromLocationAsyn(query)
    }
}